package com.wicket.okrapp.integration.dto;

import com.wicket.okrapp.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @desc ImplementTargetContentAccountAddOrSubComReqDto
 * @使用场景
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ImplementTargetContentAccountAddOrSubComReqDto
  extends BaseDto
  implements Serializable {

  /**
   * 关联归属主体ID
   */
  @NotNull(message = "关联归属主体ID不能为空")
  @ApiModelProperty("关联归属主体ID")
  private String accountObjectId;

  /**
   * 关联归属主体类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标 DEPT:部门
   */
  @NotNull(message = "关联归属主体类型编码不能为空")
  @ApiModelProperty("关联归属主体类型编码")
  private String accountObjectTypeCode;

  /**
   * 当前内容标识
   */
  @NotNull(message = "当前内容标识不能为空")
  @ApiModelProperty("当前内容标识")
  private String currentContentCode;

  /**
   * 冗余评价模板ID
   */
  @NotNull(message = "冗余评价模板ID不能为空")
  @ApiModelProperty("冗余评价模板ID")
  private String evaluationTemplateId;

  /**
   * 账单金额
   */
  @NotNull(message = "账单金额不能为空")
  @ApiModelProperty("账单金额")
  private Double billAmount;

  /**
   * 收支类型 INCOME:收入 SPENDING:支出
   */
  @NotNull(message = "收支类型不能为空")
  @ApiModelProperty("收支类型")
  private String billTypeCode;

  /**
   * 账户关联主体类型 CONTENT_TYPE:内容分类 ORGANIZATIONAL_STRUCTURE_TYPE:组织架构分类
   */
  @NotNull(message = "账户关联主体类型不能为空")
  @ApiModelProperty("账户关联主体类型")
  private String accountObjectClass;

  /**
   * 是否预算账户 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否预算账户不能为空")
  @ApiModelProperty("是否预算账户")
  private String isBudgetAccount;

  /**
   * 是否统计账户 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否统计账户")
  private String isStatisticalAccount;

  /**
   * 账户操作类型 ADD_BUDGET:增预算 DEC_BUDGET:减预算 USE_BUDGET:使用预算 AVAILABLE_AMOUNT_EXPENDITURE:可用金额支出 AVAILABLE_AMOUNT_INCOME:可用金额收入
   */
  @NotNull(message = "账户操作类型不能为空")
  @ApiModelProperty("账户操作类型")
  private String accountOptType;

  /**
   * 是否组织正式财务标准 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否组织正式财务标准不能为空")
  @ApiModelProperty("是否组织正式财务标准")
  private String isOrgOfficialAccountNom;

  /**
   * 流水业务故事信息
   */
  @NotNull(message = "流水业务故事信息不能为空")
  @ApiModelProperty("流水业务故事信息")
  private String billBizStory;

  /**
   * 对方logo
   */
  @ApiModelProperty("对方logo")
  private String oppositeLogo;

  /**
   * 对方名称
   */
  @NotNull(message = "对方名称不能为空")
  @ApiModelProperty("对方名称")
  private String oppositeName;

  /**
   * 冗余内容科目ID
   */
  @ApiModelProperty("冗余内容科目ID")
  private String contnetAccountSubjectld;

  /**
   * 冗余资金来源ID
   */
  @ApiModelProperty("冗余资金来源ID")
  private String capitalSourceId;

}
